A computer program that is tailored to run on a single machine can sometimes be modified by a developer to run instead on multiple machines, in order to take advantage of additional processing power and/or additional memory. For example, a developer may want to take a program that was originally written to execute on a single desktop computer and make it run instead on a group of computers such as a computing cluster, or a computing cloud. More generally, a developer may want to apply particular processing logic to process different data sources and not wish to expressly specify each data source as a parameter of the logic.
A computing cluster is a group of computers linked together through a fast local area network or other relatively fast communications mechanism. The computers within a cluster coordinate with one another to behave like a single powerful computer when viewed from outside the cluster.
A computing cloud is a shared networked pool of configurable computing resources (e.g., servers, storage, applications, and software services). The cloud's resources can be quickly made available to a user, and can be easily released, as computational demands by the user grow or shrink. Applications may be provided to a browser by a cloud server, so that no locally installed client copy of an application is needed.
Various definitions of cluster and cloud have been used. For purposes of the current discussion, a cluster includes less than a thousand processing cores and/or resides within a single building. A computing cloud, by contrast, includes a thousand or more cores, and/or resides in two or more buildings.